// let obj = {
//     foo:'foo',
//     "bar":'bar',
//     1:1,
//     info:{},
// }
// let obj1 = {
//     [Symbol(1)]:'s1'
// }
// console.log(Object.values(obj));//[ 1, 'foo', 'bar', {} ]
// //注意，非字符串属性会被转换为字符串输出。
// console.log(Object.entries(obj));//[ [ '1', 1 ], [ 'foo', 'foo' ], [ 'bar', 'bar' ], [ 'info', {} ] ]
// //这两个方法执行对象的浅复制：
// console.log(Object.values(obj)[3] === obj.info);//true 浅复制
// console.log(Object.entries(obj)[3][1] === obj.info);//true 浅复制
// //符号属性会被忽略：
// console.log(Object.values(obj1));//[] 符号被忽略了
// console.log(Object.entries(obj1));//[] 符号被忽略了

// function Person(){};
// Person.prototype = {
//     name:'Scott',
//     age:25,
//     sayName:function(){
//         console.log(this.name);
//     }
// }
// let person = new Person();
// console.log(person.name,person.age,person.sayName);//Scott 25 [Function: sayName]
// console.log(person.__proto__.constructor);//[Function: Object]
// console.log(Person.prototype.constructor);//[Function: Object]

// let friend = new Person();
// console.log(friend instanceof Person);//true
// console.log(friend instanceof Object);//true
// console.log(friend.__proto__.constructor === Person);//false
// console.log(friend.__proto__.constructor === Object);//true
// Object.defineProperty(Person.prototype,"constructor",{
//     enumerable:false,
//     value:Person
// })
// let person2 = new Person()
// console.log(Person.prototype.constructor);//[Function: Person]
// console.log(person2.constructor);//[Function: Person]

// function Person(){};
// let person = new Person(); //修改原型对象之前先创建实例
// Person.prototype.sayName = function(){
//     console.log('Hello,silly');
// };
// person.sayName();//Hello,silly
// function Person(){};
// let person = new Person();
// console.log(person.__proto__);//Person {}
// Person.prototype = {
//     constructor:Person,
//     name:'Alice',
//     age:'25',
//     sayName:function(){
//         console.log(this.name);
//     }
// }
// console.log(Person.prototype);
// // Person {
// //     constructor: [Function: Person],
// //     name: 'Alice',
// //     age: '25',
// //     sayName: [Function: sayName]
// //   }
// console.log(person.__proto__);
// //Person {}
//person.sayName();//TypeError: person.sayName is not a function
//Person 的新实例是在重写原型对象之前创建的。在调用 friend.sayName()的时候，会导致错误。这是因为 firend 指向的原型还是最初的原型，而这个原型上并没有 sayName 属性。





